/*
 * Zed Attack Proxy (ZAP) and its related class files.
 * 
 * ZAP is an HTTP/HTTPS proxy for assessing web application security.
 * 
 * Copyright The ZAP development team
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0 
 *   
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License.  
 */
package org.zaproxy.zap.extension.ascan;

import org.parosproxy.paros.core.scanner.ScannerParam;
import org.parosproxy.paros.network.ConnectionParam;
import org.zaproxy.zap.extension.ascan.AttackModeScanner.AttackModeScannerThread;
import org.zaproxy.zap.extension.ruleconfig.RuleConfigParam;
import org.zaproxy.zap.model.Target;

/**
 * A 'dummy' ActiveScan class just used for recording the Attack mode scan results.
 * @author simon
 *
 */
public class AttackScan extends ActiveScan {

	private final AttackModeScannerThread attackModeScannerThread;

	public AttackScan(String displayName, ScannerParam scannerParam, 
			ConnectionParam param, ScanPolicy scanPolicy, RuleConfigParam ruleConfigParam) {
		this(displayName, scannerParam, param, scanPolicy, ruleConfigParam, null);
	}

	AttackScan(String displayName, ScannerParam scannerParam,
			ConnectionParam param, ScanPolicy scanPolicy, RuleConfigParam ruleConfigParam,
			AttackModeScannerThread attackModeScannerThread) {
		super(displayName, scannerParam, param, scanPolicy, ruleConfigParam);
		this.attackModeScannerThread = attackModeScannerThread;
	}
	
	@Override
    public void start(Target target) {
		// Do nothing	
    }

	@Override
    public void stopScan() {
		
	}

	@Override
    public boolean isStopped() {
		return false;
	}

	@Override
    public int getProgress() {
		return 0;
	}

	@Override
    public int getMaximum() {
		return 100;
	}

	@Override
    public void pauseScan() {
		// Do nothing	
	}

	@Override
    public void resumeScan() {
		// Do nothing	
	}

	@Override
    public boolean isPaused() {
		return false;
	}

	@Override
    public boolean isRunning() {
		return true;
	}

	boolean isDone() {
		if (attackModeScannerThread == null) {
			return false;
		}
		return !attackModeScannerThread.isRunning() || !attackModeScannerThread.isActive();
	}

}
